Skip to content

Tags and themes API ​

Sources: internal/handlers/song_tag.go, theme_pack.go, theme_pack_catalog.go, and internal/app/routers.go. Field definitions are in docs/swagger.json. Every interface requires a Bearer token.

Tags link to songs through song_tag_links and do not replace genre / style. Theme packs are declarative JSON. Catalog installation and manual import share validation; separate endpoints manage the active pack.

GET /api/v1/song-tags ​

GET /song-tags.

ParameterLocationTypeRequired
keywordquerystringfalse
sortquerystringfalse
orderquerystringfalse
limitqueryintegerfalse
offsetqueryintegerfalse
StatusResponse type
200object
500object

POST /api/v1/song-tags ​

POST /song-tags.

ParameterLocationTypeRequired
requestbodyobjecttrue
StatusResponse type
201SongTag
400object
500object

GET /api/v1/song-tags/{id} ​

GET /song-tags/{id}.

ParameterLocationTypeRequired
idpathintegertrue
StatusResponse type
200SongTag
404object

PUT /api/v1/song-tags/{id} ​

PUT /song-tags/{id}.

ParameterLocationTypeRequired
idpathintegertrue
requestbodyobjecttrue
StatusResponse type
204object
400object
404object

DELETE /api/v1/song-tags/{id} ​

DELETE /song-tags/{id}.

ParameterLocationTypeRequired
idpathintegertrue
StatusResponse type
204object
400object

POST /api/v1/song-tags/{id}/bind ​

POST /song-tags/{id}/bind.

ParameterLocationTypeRequired
idpathintegertrue
requestbodyobjecttrue
StatusResponse type
200object
400object
500object

GET /api/v1/song-tags/{id}/song-ids ​

GET /song-tags/{id}/song-ids.

ParameterLocationTypeRequired
idpathintegertrue
StatusResponse type
200array<integer>
400object
500object

GET /api/v1/song-tags/{id}/songs ​

GET /song-tags/{id}/songs.

ParameterLocationTypeRequired
idpathintegertrue
limitqueryintegerfalse
offsetqueryintegerfalse
StatusResponse type
200object
400object
500object

POST /api/v1/song-tags/{id}/unbind ​

POST /song-tags/{id}/unbind.

ParameterLocationTypeRequired
idpathintegertrue
requestbodyobjecttrue
StatusResponse type
200object
400object
500object

GET /api/v1/theme-packs ​

GET /theme-packs.

StatusResponse type
200array<ThemePackListItem>

POST /api/v1/theme-packs ​

POST /theme-packs.

ParameterLocationTypeRequired
requestbodyobjecttrue
StatusResponse type
200ThemePackResponse
400ErrorResponse

GET /api/v1/theme-packs/active ​

GET /theme-packs/active.

StatusResponse type
200ThemePackResponse

PUT /api/v1/theme-packs/active ​

PUT /theme-packs/active.

ParameterLocationTypeRequired
requestbodyobjecttrue
StatusResponse type
200SuccessResponse
400ErrorResponse
404ErrorResponse

DELETE /api/v1/theme-packs/active ​

DELETE /theme-packs/active.

StatusResponse type
200SuccessResponse

POST /api/v1/theme-packs/catalog/install ​

POST /theme-packs/catalog/install.

ParameterLocationTypeRequired
requestbodyobjecttrue
StatusResponse type
200ThemePackResponse
400ErrorResponse

POST /api/v1/theme-packs/catalog/refresh ​

POST /theme-packs/catalog/refresh.

ParameterLocationTypeRequired
requestbodyobjecttrue
StatusResponse type
200object

GET /api/v1/theme-packs/{themeID} ​

GET /theme-packs/{themeID}.

ParameterLocationTypeRequired
themeIDpathstringtrue
StatusResponse type
200ThemePackResponse
404ErrorResponse

DELETE /api/v1/theme-packs/{themeID} ​

DELETE /theme-packs/{themeID}.

ParameterLocationTypeRequired
themeIDpathstringtrue
StatusResponse type
200SuccessResponse
404ErrorResponse